package apresentacao;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import javax.swing.Timer;
import trabalhothreads.Banco;
import trabalhothreads.CaixaAtendimento;
import trabalhothreads.Pessoa;
import trabalhothreads.PortaEntrada;

public class Canvas extends JPanel implements ActionListener {

    private Timer timer;
    private Main pai;
    private Banco banco;
    PortaEntrada porta;
    CaixaAtendimento caixa1, caixa2;
    private int cont = 0;

    public Canvas(Main p, Banco banco) {
        this.pai = p;
        this.banco = banco;
//        porta = new PortaEntrada(banco.getFila());
//        caixa1 = new CaixaAtendimento(banco.getFila(), "Caixa1");
//        caixa2 = new CaixaAtendimento(banco.getFila(), "Caixa2");
//        
        this.addKeyListener(new TratadorEventoTeclado());
        this.setFocusable(true);
        this.setBackground(Color.BLACK);
        this.setDoubleBuffered(true); // tornando o redesenho mais rapido
        this.timer = new Timer(25, this);
        this.timer.start();
    }

    public void novoJogo() {
        
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.WHITE);
        g2d.drawString("Pessoas na Fila ->"+this.banco.getFila().getFila().size(), 50, 50);
        g2d.drawString(((Pessoa)(banco.getFila().getFila().peek())).getNome(),50,70);
        pai.setJPBPoder(banco.getFila().getFila().size());
        pai.setJLPontos(banco.getFila().getLimite());
        pai.setJPBCaixa1(50);
        pai.setJPBCaixa2(50);
        pai.setJPBFila(50);


        
        
        
        }


    

    /*
     * É chamado pelo Timer a toda hora para realizar a jogada e redesenhar a
     * tela
     */
    public void actionPerformed(ActionEvent e) {

        repaint();
    }


    /*
     * Classe para tratamento dos eventos do teclado Toda vez que alguém
     * utilizar o teclado ela executará o método correspondente ao evento
     * ocorrido: tecla pressionada ou levantada
     */
    private class TratadorEventoTeclado extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            try {
                teclaPressionada(e);// tecla pressionada
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Canvas.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {  // tecla levantada
        }
    }

    public void teclaPressionada(KeyEvent evento) throws FileNotFoundException {
        switch (evento.getKeyCode()) {
            case KeyEvent.VK_F2:
                novoJogo();
                break;
        }
    }
}
